﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace LI4.Data
{
    class Operador
    {
        private Ligacao ligacao;
        
        public Operador()
        {
            ligacao = new Ligacao();
        }

        public int remover(Business.Operador op)
        {
            Data.Login login = new Data.Login();

            try
            {
               login.update(op.Login);
                return Ligacao.OK;
            }
            catch
            {
                return Ligacao.DBERROR;
            }
        }

        /*public string getCodigoOperador(Business.Operador op)
        {
            SqlDataReader reader;

            ligacao.Select("SELECT * FROM Funcionarios where username='" + op.Login.Username + "';");
            
            reader = ligacao.mySqlDataReader;
            reader.Read();
            string username = reader.GetString();
            
            reader.Close();
            return username;
        }*/
        public int update(Business.Operador oper)
        {
            int success;
            Data.Login login = new Data.Login();

            try
            {
                ligacao.Update("UPDATE [dbo].[Funcionarios] SET nome='" + oper.Nome + "', rua='" + oper.Rua + "',cod_postal='" + oper.CodPostal + "', telefone=" + oper.Telefone + ",mail='" + oper.Mail + "',contribuinte='" + oper.Contribuinte + "', posto=" + oper.Posto + ",cod_localidade=" + oper.Localidade.CodLocalidade + " where username='" +oper.Login.Username + "'");
                login.update(oper.Login);

                success = Business.Login.SUCCESS;
            }
            catch
            {
                success = Ligacao.DBERROR;
            }
            return success;
        }

        public int inserirOperador(Business.Operador op)
        {
            int success;
            Data.Login login = new Data.Login();
            if (!login.existeLogin(op.Login.Username))
            {
                try
                {
                    login.inserir(op.Login);
                    success = Ligacao.OK;
                }
                catch
                {
                    success = Ligacao.DBERROR;
                }

            }
            else
                success = Business.Login.BADLOGIN;

            return success;
        }

        public Business.Operador getOperador(string username)
        {
            Data.Login log = new Data.Login();
            Data.Localidade localData = new Localidade();

            Business.Operador operador = new LI4.Business.Operador();
            Business.Login login = new LI4.Business.Login(log.getLogin(username));
            Business.Localidade local;


            SqlDataReader reader;

            ligacao.Select("SELECT * FROM Funcionarios where username='" + username + "';");

            reader = ligacao.mySqlDataReader;
            if (reader.Read())
            {
                string user = reader.GetString(0);
                string nome = reader.GetString(1);
                string rua = reader.GetString(2);
                string cod_postal = reader.GetString(3);
                int telefone = reader.GetInt32(4);
                string mail = reader.GetString(5);
                int contribuinte = reader.GetInt32(6);
                int posto = reader.GetInt32(7);
                int cod_local = reader.GetInt32(8);

                reader.Close();
                
                local = new LI4.Business.Localidade(localData.getLocalidade(cod_local));

                operador = new LI4.Business.Operador(nome, rua, cod_postal, telefone, mail, contribuinte, posto, local, login);

            }

            reader.Close();

            return operador;
        }
        public bool exiteOperador(string username)
        {
            SqlDataReader reader;

            ligacao.Select("SELECT username FROM Funcionarios where username='" + username + "';");
            reader = ligacao.mySqlDataReader;
            bool existe = reader.Read();
            reader.Close();

            return existe;
        }

       /* static void Main()
        {
            Data.Ligacao lig = new Ligacao();
            Array paramts = n

            lig.runProcedure("updateCandidatos", Array);
        }*/
    }
}
